Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Job Control Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Job_Control_Language"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Job_Control_Language rootpage-Job_Control_Language skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Job Control Language</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>Job Control Language</b> (<b>JCL</b>) ist die Steuersprache für <a href="Stapelverarbeitung" title="Stapelverarbeitung">Stapelverarbeitungen</a> in einem <a href="Gro%C3%9Frechner" title="Großrechner">Großrechnerumfeld</a> und gehört zu den <a href="Skriptsprache" title="Skriptsprache">Skriptsprachen</a>. Aufgabe der JCL ist es, die auszuführenden Programme, deren Reihenfolge sowie eine <a href="Laufzeitumgebung" title="Laufzeitumgebung">Laufzeitumgebung</a> (Verbindung zu physischer Hardware, also den Ein- und Ausgabegeräten und Dateien) vorzugeben. Die zu einer konkreten Aufgabe gehörenden Programme oder Programmfolgen und die erforderliche Umgebung werden mithilfe der JCL in sogenannten <a href="Job_(EDV)" title="Job (EDV)">Jobs</a> gebündelt, die so als lauffähige Einheiten im Rahmen des <a href="Multitasking" title="Multitasking">Multitasking</a> definiert werden. Die Jobs stellen eine den eigentlichen Anwendungsprogrammen übergeordnete Stufe auf Systemebene dar und sind insofern mit den Shell-Skripten bei <a href="Unix" title="Unix">Unix</a> oder den <a href="Microsoft_Batch" class="mw-redirect" title="Microsoft Batch">Batch-Dateien</a> bei <a href="MS-DOS" title="MS-DOS">MS-DOS</a> oder <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a> vergleichbar.
</p><p>Dieser Artikel beschreibt die JCL unter <a href="IBM" title="IBM">IBM</a>-<a href="Z/OS" title="Z/OS">z/OS</a>. Andere <a href="Mainframe#Eingesetzte_Betriebssysteme" class="mw-redirect" title="Mainframe">Großrechner-Betriebssysteme</a> wie <a href="Z/VSE" title="Z/VSE">VSE</a> verwenden ebenfalls JCL genannte Sprachen, die jedoch eine ganz andere <a href="Syntax" title="Syntax">Syntax</a> haben.
</p>

<div class="mw-heading mw-heading2"><h2 id="Entwicklung">Entwicklung</h2></div>
<p>Die heute auf Systemen unter <a href="Z/OS" title="Z/OS">z/OS</a> eingesetzte JCL wurde 1964 für <a href="OS/360" title="OS/360">OS/360</a> IBM entwickelt. Bei der Weiterentwicklung wurde Abwärtskompatibilität gewährleistet.
</p><p>Ursprünglich wurde JCL auf <a href="Lochkarte" title="Lochkarte">Lochkarten</a> gespeichert. Die Jobs wurden dann per Kartenleser ins System eingespielt. Heute sind JCL-Bibliotheken <a href="Partitioned_Datasets" class="mw-redirect" title="Partitioned Datasets">Partitioned Datasets</a> mit Datensatz-Format FB (Fixed Blocked) und Datensatz-Länge&nbsp;80 üblich. Die Bezeichnung <i>Karte</i> für eine JCL-Anweisung ist aber immer noch
gebräuchlich.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Verarbeitung">Verarbeitung</h2></div>
<p>JCL wird vom <a href="Job_Entry_Subsystem" title="Job Entry Subsystem">Job Entry Subsystem</a> (JES2 oder JES3) eingelesen und interpretiert.
</p><p>Auch die Subsysteme, Systemfunktionen (Started Tasks) und die Anmeldungen eines Benutzers am <a href="Time-Sharing_Option" title="Time-Sharing Option">TSO</a> verwenden JCL-Prozeduren zur Initialisierung.
</p>
<div class="mw-heading mw-heading2"><h2 id="Anweisungen">Anweisungen</h2></div>
<p>Alle Anweisungen beginnen mit <code>//</code>. Kommentare werden mit <code>//*</code> gekennzeichnet.
Es ist möglich, Daten für die Standardeingabe direkt in der JCL mitzugeben.
</p><p>Die wichtigsten Anweisungen sind:
</p>
<ul><li>JOB (Informationen über auszuführende Batchverarbeitung)</li>
<li>EXEC (führe ein Programm oder eine Prozedur aus)</li>
<li>DD (Data Definition, Zuordnung „file“ im Programm zu physischer Datei)</li>
<li>PROC und PEND zum Definieren lokaler oder globaler Prozeduren</li></ul>
<p>Eine Programmausführung, die mit einer EXEC-Anweisung gestartet wird, wird <i>Step</i> (Verarbeitungsschritt) genannt. Es ist möglich, die Durchführung von Steps von den Rückgabewerten früherer Steps (Condition Code) abhängig zu machen. Dafür gibt es eine einfache IF-THEN-ELSE Logik, mithilfe derer man Blöcke von Anweisungen (Steps) bedingt ausführen kann. Schleifen sind bei der Job-Abarbeitung nicht möglich, die Steps werden immer sequentiell ausgeführt.
</p><p>Ein direkter Rückbezug auf Ein- und Ausgabedaten eines vorhergehenden Steps ist möglich, um diese in folgenden Steps weiterzuverwenden.
</p><p>Die Verwendung von Variablen (Symbols) in der JCL ist möglich, unterliegt allerdings einigen Einschränkungen. Variablen können nur dazu verwendet werden, um Teile der JCL vor der Ausführung des Jobs zu ändern. Zur Laufzeit können lediglich die Rückgabewerte („return codes“) der einzelnen Steps den Job-Ablauf beeinflussen.
</p><p>Ein Job wird entweder automatisiert zeitgesteuert über ein Scheduling System gestartet oder kann auch direkt angestoßen werden (meist über <a href="Interactive_System_Productivity_Facility" title="Interactive System Productivity Facility">ISPF</a>).
</p>
<div class="mw-heading mw-heading2"><h2 id="Beispiele">Beispiele</h2></div>
<p><b>Beispiel 1</b>:
</p>
<div class="mw-highlight mw-highlight-lang-jcl mw-content-ltr" dir="ltr"><pre><span></span><span class="kp">//</span><span class="nl">JOB1</span><span class="w"> </span><span class="kr">JOB</span><span class="w"> </span><span class="p">(</span><span class="mi">12345</span><span class="p">),</span><span class="n">MSGCLASS</span><span class="o">=</span><span class="n">X</span><span class="p">,</span><span class="n">NOTIFY</span><span class="o">=</span><span class="n">SYSPROG1</span>
<span class="kp">//</span><span class="nl">STEP1</span><span class="w"> </span><span class="kr">EXEC</span><span class="w"> </span><span class="n">PGM</span><span class="o">=</span><span class="n">IEFBR14</span>
<span class="kp">//</span><span class="nv">DD1</span><span class="kr"> DD </span><span class="n">DSN</span><span class="o">=</span><span class="n">AB</span><span class="p">.</span><span class="n">CD</span><span class="p">.</span><span class="n">EFGH</span><span class="p">,</span><span class="n">DISP</span><span class="o">=</span><span class="p">(</span><span class="n">OLD</span><span class="p">,</span><span class="n">DELETE</span><span class="p">)</span>
</pre></div>
<p>Dieser Job löscht die katalogisierte Datei AB.CD.EFGH. Das ausgeführte Programm <a href="IEFBR14" title="IEFBR14">IEFBR14</a> ist ein Dummy-Programm. Dieses ist nur notwendig, weil der JCL-Interpreter bei jedem Step einen Programm- oder Prozeduraufruf erwartet. Der Benutzer <i>SYSPROG1</i> wird nach Ende des Jobs über den Ausführungsstatus informiert. In diesem Fall <a href="Return_Code" title="Return Code">Return-Code</a>&nbsp;0 (=OK) oder „JCL&nbsp;ERROR“, falls der Job fehlerhaft kodiert wurde oder wenn die entsprechende Datei nicht existiert.
</p><p>Die Zuordnung der Datei AB.CD.EFGH zum DD-Namen DD1 ist in diesem Fall beliebig, weil sie vom aufgerufenen Programm nicht verwendet wird.
</p><p>Ablauf (vereinfacht):
</p>
<ul><li>Die Datei wird alloziert (1. DISP-Parameter OLD → exklusiver Zugriff) und dem DD-Namen DD1 zugeordnet. (Step-Preallocation)</li>
<li>Das Dummy-Programm wird aufgerufen.</li>
<li>Die Datei wird gelöscht (2. DISP-Parameter DELETE, Step-Nachverarbeitung)</li></ul>
<p><b>Beispiel 2</b>:
</p>
<div class="mw-highlight mw-highlight-lang-jcl mw-content-ltr" dir="ltr"><pre><span></span><span class="kp">//</span><span class="nl">JOB2</span><span class="w"> </span><span class="kr">JOB</span><span class="w"> </span><span class="p">(</span><span class="mi">123456</span><span class="p">),</span><span class="n">MSGCLASS</span><span class="o">=</span><span class="n">X</span>
<span class="kp">//</span><span class="nl">STEP1</span><span class="w"> </span><span class="kr">EXEC</span><span class="w"> </span><span class="n">PGM</span><span class="o">=</span><span class="n">SALDO</span>
<span class="kp">//</span><span class="nv">STEPLIB</span><span class="kr"> DD </span><span class="n">DISP</span><span class="o">=</span><span class="n">SHR</span><span class="p">,</span><span class="n">DSN</span><span class="o">=</span><span class="n">BH</span><span class="p">.</span><span class="n">PROD</span><span class="p">.</span><span class="n">LOAD</span>
<span class="kp">//</span><span class="w"> </span><span class="n">DD</span><span class="w"> </span><span class="c1">DISP=SHR,DSN=BH.PROD.LOAD2</span>
<span class="kp">//</span><span class="nv">INPUT</span><span class="kr"> DD </span><span class="n">DISP</span><span class="o">=</span><span class="n">SHR</span><span class="p">,</span><span class="n">DSN</span><span class="o">=</span><span class="n">BH</span><span class="p">.</span><span class="n">DETAIL</span><span class="p">.</span><span class="n">BESTAND</span>
<span class="kp">//</span><span class="nv">LISTE</span><span class="kr"> DD </span><span class="n">SYSOUT</span><span class="o">=</span><span class="nb">*</span>
</pre></div>
<p>Hier wird das Anwendungsprogramm SALDO ausgeführt, das <a href="Lademodul" title="Lademodul">Lademodul</a> wird zunächst in den Bibliotheken BH.PROD.LOAD und BH.PROD.LOAD2 gesucht, danach in Systembibliotheken. Beim lesenden Zugriff auf Dateien können mehrere Datensätze unter einem DD-Namen verkettet werden.
</p><p>Das Programm SALDO soll seine Eingabedaten aus der Datei BH.DETAIL.BESTAND lesen und die Ergebnisse in eine Spool-Datei schreiben (DD-Name LISTE). Die Zuordnung des Eingabe-Datensatzes zum DD-Namen „INPUT“ bzw. der Ausgabe zu „LISTE“ ist vom Programm vorgegeben (logischer <a href="Dateiname" title="Dateiname">Dateiname</a>).
</p><p><b>Beispiel 3</b>:
</p>
<div class="mw-highlight mw-highlight-lang-jcl mw-content-ltr" dir="ltr"><pre><span></span><span class="kp">//</span><span class="nl">JOB3</span><span class="w"> </span><span class="kr">JOB</span><span class="w"> </span><span class="p">(</span><span class="mi">123456</span><span class="p">),</span><span class="n">MSGCLASS</span><span class="o">=</span><span class="n">X</span>
<span class="kp">//</span><span class="nl">STEP1</span><span class="w"> </span><span class="kr">EXEC</span><span class="w"> </span><span class="n">PGM</span><span class="o">=</span><span class="n">IDCAMS</span>
<span class="kp">//</span><span class="nv">DDIN</span><span class="kr"> DD </span><span class="n">DISP</span><span class="o">=</span><span class="n">SHR</span><span class="p">,</span><span class="n">DSN</span><span class="o">=</span><span class="n">SYSPROG</span><span class="p">.</span><span class="n">SMF</span><span class="p">.</span><span class="n">AUSWERT</span>
<span class="kp">//</span><span class="nv">DDOUT</span><span class="kr"> DD </span><span class="n">DISP</span><span class="o">=</span><span class="p">(</span><span class="n">NEW</span><span class="p">,</span><span class="n">CATLG</span><span class="p">),</span><span class="n">DSN</span><span class="o">=</span><span class="n">SYSPROG</span><span class="p">.</span><span class="n">SMF</span><span class="p">.</span><span class="n">HISTORY</span><span class="p">(</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span>
<span class="kp">//</span><span class="w"> </span><span class="n">UNIT</span><span class="o">=</span><span class="n">SYSDA</span><span class="p">,</span><span class="n">SPACE</span><span class="o">=</span><span class="p">(</span><span class="n">CYL</span><span class="p">,(</span><span class="mi">15</span><span class="p">,</span><span class="mi">15</span><span class="p">),</span><span class="n">RLSE</span><span class="p">),</span><span class="n">DCB</span><span class="o">=</span><span class="nb">*</span><span class="p">.</span><span class="n">DDIN</span>
<span class="kp">//</span><span class="nv">SYSPRINT</span><span class="kr"> DD </span><span class="n">SYSOUT</span><span class="o">=</span><span class="nb">*</span>
<span class="kp">//</span><span class="nv">SYSIN</span><span class="kr"> DD </span><span class="nb">*</span>
<span class="x"> REPRO INFILE(DDIN) OUTFILE(DDOUT)</span>
<span class="kp">/*</span>
</pre></div>
<p>Hier wird mit dem System-<a href="Dienstprogramm" title="Dienstprogramm">Utility</a> <a href="IDCAMS" title="IDCAMS">IDCAMS</a> die Datei SYSPROG.SMF.AUSWERT in eine neue Generation der „<a href="Generation_Data_Group" title="Generation Data Group">Generation Data Group</a>“ (GDG) SYSPROG.SMF.HISTORY kopiert. Das Protokoll dieser Aktion (SYSPRINT) wird in eine Spool-Datei geschrieben, die Steueranweisung für IDCAMS (REPRO-Command) wurde in der Standard-Eingabe SYSIN kodiert, welche mit <code>/*</code> abgeschlossen wird.
</p><p><b>Beispiel 4</b>
</p>
<div class="mw-highlight mw-highlight-lang-jcl mw-content-ltr" dir="ltr"><pre><span></span><span class="kp">//</span><span class="nl">JOB4</span><span class="w"> </span><span class="kr">JOB</span><span class="w"> </span><span class="p">(</span><span class="mi">123456</span><span class="p">),</span><span class="n">MSGCLASS</span><span class="o">=</span><span class="n">X</span>
<span class="kp">//</span><span class="nl">STEP1</span><span class="w"> </span><span class="kr">EXEC</span><span class="w"> </span><span class="n">PGM</span><span class="o">=</span><span class="n">P1</span>
<span class="x">...</span>
<span class="kp">//</span><span class="nl">STEP2</span><span class="w"> </span><span class="kr">EXEC</span><span class="w"> </span><span class="n">PGM</span><span class="o">=</span><span class="n">P2</span><span class="p">,</span><span class="n">COND</span><span class="o">=</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="n">GT</span><span class="p">,</span><span class="n">STEP1</span><span class="p">)</span>
<span class="x">...</span>
<span class="kp">//</span><span class="nl">STEP3</span><span class="w"> </span><span class="kr">EXEC</span><span class="w"> </span><span class="n">PGM</span><span class="o">=</span><span class="n">P3</span><span class="p">,</span><span class="n">COND</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="n">LE</span><span class="p">)</span>
<span class="x">...</span>
</pre></div>
<p>Programme unter zOS geben in der Regel einen Condition code zurück, der mit dem COND-Parameter getestet werden kann, vergleichbar mit dem <a href="Return_Code" title="Return Code">Return Code</a> unter Unix.
</p><p>In diesem Beispiel wird STEP1 ausgeführt und anschließend STEP2 <b>nicht</b> ausgeführt, wenn der 4 größer ist als der Condition Code aus STEP1. Mit anderen Worten, STEP2 wird nur ausgeführt, wenn der Condition Code aus STEP1 größer oder gleich 4 ist.
</p><p>STEP3 mit dem COND-Parameter ohne Jobstep spezifiziert, dass dieser Step dann nicht ausgeführt wird, wenn 8 kleiner oder gleich irgendeinem condition code eines vorhergehenden job steps ist – mit anderen Worten, wenn irgenein vorheriger Job Step einen Condition code von kleiner als 8 hatte.
</p>
<div class="mw-heading mw-heading2"><h2 id="Trivia">Trivia</h2></div>
<p><a href="Frederick_P._Brooks" title="Frederick P. Brooks">Fred Brooks</a>, bis 1964 Projektleiter des OS/360-Projekts bei IBM, scherzte 2004 bei einem Vortrag anlässlich „40 Jahre <a href="System/360" title="System/360">System/360</a>“, JCL sei „die schlechteste <a href="Programmiersprache" title="Programmiersprache">Programmiersprache</a>, die jemals irgendwann von irgendjemandem zu irgendeinem Zweck entwickelt wurde, und das unter meiner Leitung. […] Es ist eine Jobsteuersprache für alle sechs echten Programmiersprachen“.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> IBM selbst benutzt dieses Zitat von Brooks in den eigenen Schulungsunterlagen, um zu verdeutlichen, was JCL ist und welchem Zweck es dient.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li>Michael Winter: <i>MVS/ESA JCL: Einführung in die Praxis</i>. Oldenbourg Wissenschaftsverlag, 1999, ISBN 978-3-486-25058-9</li>
<li>Gary DeWard Brown, Michael Teuffel: <i>zOS/JCL: Job Control Language im Betriebssystem z/OS MVS</i>. Oldenbourg Wissenschaftsverlag, 2004, ISBN 978-3-486-27397-7</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://www.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v2r2.ieab500/toc.htm">Originalhandbuch MVS JCL User’s Guide</a></li>
<li><a rel="nofollow" class="external text" href="https://www.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v2r2.ieab600/toc.htm">Originalhandbuch MVS JCL Reference</a></li>
<li><a rel="nofollow" class="external text" href="http://publib.boulder.ibm.com/infocenter/zoslnctr/v1r7/index.jsp">Interaktive Kurzeinführungen in JCL und ISPF</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.ibm.com/support/knowledgecenter/de/SSMQ79_9.1.1.1/com.ibm.egl.gg.doc/topics/gegl_cobol_pseudojclsyntax.html">IBM Knowledge Center, Pseudo-JCL-Syntax</a></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=8c0_Lzb1CJw#t=01h19m00s">Vortrag von Fred Brooks anlässlich "40 Jahre System/360"</a></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://dtsc.dfw.ibm.com/MVSDS/'HTTPD2.APPS.ZOSCLASS.PDF(Z06)'">IBM Schulungsunterlagen zu JCL</a></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2024-10-23" href="https://de.wikipedia.org/wiki/?title=Job_Control_Language&amp;oldid=249686605">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>